<template>
	<view class="container">
		<customNav>
			<view style="display: flex; align-items: center;" @click="handleToHome">
				<uni-icons type="left" size="28"></uni-icons>
				<text class="size18" style="margin-left: 16rpx;">壁挂炉</text>
			</view>
		</customNav>
		<view class="content">
			<view style="display: flex;align-items: center;justify-content: center;margin-top: 10px;">
				<img :src="bigualuUrl" style="width:198px;height: 198px;" alt="" />
			</view>
			<view class="margin-t10"
				style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
				<view style="width: 25%;display: flex;align-items: center;justify-content: center;flex-flow: column;">
					<view class="size20 bold">{{temp1}}℃</view>
					<view class="size14 margin-t8">采暖温度</view>
				</view>
				<view style="width: 25%;display: flex;align-items: center;justify-content: center;flex-flow: column;">
					<view class="size20 bold">{{temp2}}℃</view>
					<view class="size14 margin-t8">卫浴温度</view>
				</view>
				<view style="width: 25%;display: flex;align-items: center;justify-content: center;flex-flow: column;">
					<view class="size20 bold">{{temp3}}℃</view>
					<view class="size14 margin-t8">回水温度</view>
				</view>
				<view style="width: 25%;display: flex;align-items: center;justify-content: center;flex-flow: column;">
					<view class="size20 bold">{{paVal}}Bar</view>
					<view class="size14 margin-t8">供水压力</view>
				</view>
			</view>
			<view style="padding:0 20px;width: 100%;box-sizing: border-box;margin-top: 20px;">
				<view class="white-bg1">
					<view style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
						<img src="@/static/images/jian.png" style="width:28px;height:28px" alt="" @click="jianClick" />
						<view class="bold" style="width:calc(100% - 60px);text-align: center;font-size: 36px;">{{temp}}℃
						</view>
						<img src="@/static/images/jia.png" style="width:28px;height:28px" alt="" @click="jiaClick" />
					</view>
					<view style="width: 100%;" class="margin-t20">
						<u-line-progress :percentage="getProgross(temp)" activeColor="#409eff" :showText="false"
							height="15"></u-line-progress>
					</view>
				</view>
				<view class="white-bg">
					<view class="size14">壁挂炉开关机</view>
					<u-switch v-model="child_lock1" size="26" @change="changeSwitch1"></u-switch>
				</view>
				<view class="white-bg">
					<view class="size14">季节设置</view>
					<!-- <u-switch v-model="child_lock2" @change="changeSwitch2"></u-switch> -->
					<mp-switch ref="switchRef2" trueText="夏季" falseText="冬季" @change="changeSwitch2"></mp-switch>
				</view>
				<view class="white-bg">
					<view class="size14">ECO模式</view>
					<u-switch :disabled="true" v-model="child_lock3" size="26" @change="changeSwitch3"></u-switch>
				</view>
				<view class="white-bg">
					<view class="size14">供暖/卫浴设置</view>
					<!-- <u-switch v-model="child_lock4" @change="changeSwitch4"></u-switch> -->
					<mp-switch :disabled="true" ref="switchRef4" trueText="卫浴" falseText="供暖" @change="changeSwitch4"></mp-switch>
				</view>
				<view class="white-bg">
					<view class="size14">防冻状态</view>
					<view class="size14">{{child_lock5}}</view>
				</view>
				<view class="white-bg">
					<view class="size14">火焰状态</view>
					<view class="size14">{{child_lock6}}</view>
				</view>
				<view class="white-bg">
					<view class="size14">故障状态</view>
					<view class="size14">{{child_lock7}}</view>
				</view>
			</view>
		</view>
		<CustomTabbar :tabList="list" :currentIndex="current" @tabChange="handleTabChange" />
		<uni-popup ref="popupRef" :mask-click="false" border-radius="10px 10px 0 0">
			<view style="width:300px;background-color: #ffffff;border-radius: 20px;padding: 30px 20px 10px 20px;box-sizing: border-box
	;">
				<view class="size18" style="color: #333333;font-weight: bold;">修改设备别名</view>
				<view class="size14" style="color: #333333;margin-top: 15px;">请输入设备别名：例如客厅</view>
				<input class="uni-input" v-model="set_alias"
					style="border-bottom: 1px solid #666666;margin-top: 10px;padding: 10px 0;" maxlength="50"
					placeholder="请输入设备别名" />
				<view style="display: flex;align-items: center;justify-content: flex-end;margin-top: 10px;">
					<view class="size14" @click="closePopupClick" style="padding: 10px;box-sizing: border-box
			;">取消</view>
					<view class="size14" @click="modifyDeviceClick" style="margin-left: 15px;color: #3c9cff;padding: 10px;box-sizing:border-box 
			;">确定</view>
				</view>
			</view>
		</uni-popup>
		<!-- 弹出菜单 -->
		<!-- <view :style="{ display: showMenu ? 'block' : 'none'}">
			<view class="menu-box" :style="{'bottom': tabberHeight }">
				<view class="menu">
					<view class="menu-item" @click="menuItemClick('1')">客厅</view>
					<view class="menu-item" @click="menuItemClick('2')">主卧</view>
					<view class="menu-item" @click="menuItemClick('3')">次卧</view>
				</view>
			</view>
		</view> -->
	</view>
</template>
<script>
	import { eventBus } from '@/utils/bus/index.js';
	import env from "@/config/env.js";
	import customNav from "@/components/nav/index.vue"
	import CustomTabbar from '@/components/tab/index.vue';
	import mpSwitch from '@/components/switch/index.vue'; // 根据实际路径调整
	import {
		modifyDevice,
		deviceToHome
	} from "@/api/device/index.js";
	import list from "../../../uni_modules/uview-ui/libs/config/props/list";
	export default {
		components: {
			customNav,
			CustomTabbar,
			mpSwitch
		},
		data() {
			return {
				bigualuUrl: env.baseUrl + "/file/get_file?file_name=壁挂炉图标.png",
				inPage: false,
				list: [{
						icon: 'home',
						text: '客厅',
						color: '#999',
						activeColor: '#007aff'
					},
					{
						icon: 'home',
						text: '主卧',
						color: '#999',
						activeColor: '#007aff'
					},
					{
						icon: 'home',
						text: '次卧',
						color: '#999',
						activeColor: '#007aff'
					},
					{
						icon: 'compose',
						text: '编辑',
						color: '#999',
						activeColor: '#007aff'
					}
				],
				current: 0,

				set_alias: "",
				unit_uuid: "",

				showMenu: false,
				tabberHeight: '50px',
				temp1: "0", //采暖温度
				temp2: "0", //卫浴温度
				temp3: "0", //回水温度
				paVal: "0", //供水压力

				child_lock1: false, //壁挂炉设置
				child_lock2: false, //季节设置
				switchRef2: null,
				child_lock3: false, //ECO模式设置
				child_lock4: false, //供暖/卫浴设置
				switchRef4: null,
				child_lock5: "正常", //防冻状态
				child_lock6: "无火", //火焰状态
				child_lock7: "正常",
				webSocket: null, //长连接

				stringMap: null, //解析出来的数组

				temp: "40", //实时出水温度
				tempHex: "",
				hexArray: [],
				hexArrayNum: [],
			}
		},
		onLoad: function(options) {
			this.unit_uuid = options.setUuid
			this.current = options.pactNumber ? Number(options.pactNumber) - 1 : -1
			this.initWebSocket()
		},
		onShow() {
			this.getTenSixData();
			this.inPage = true;
			uni.getSystemInfo({
				success: (res) => {
					console.log(res)
					// 获取底部安全区域高度
					// this.safeAreaBottom = res.safeArea.bottom - res.safeArea.top - res.safeArea.height;
					let safeAreaBottom = res.safeAreaInsets.bottom
					this.tabberHeight = safeAreaBottom + 50 + 'px'
				}
			});
		},
		onUnload() {
			// 在页面销毁时关闭 WebSocket 连接
			if (this.webSocket) {
				this.webSocket.close({
					success: () => {
						console.log('主动关闭成功');
						this.webSocket = null;
						this.inPage = false;
					},
					fail: (err) => console.error('关闭失败:', err)
				});
			}
		},
		methods: {
			//回到首页
			handleToHome() {
				uni.navigateBack({
					delta: 1,
				})
			},
			//底部菜单设置
			handleTabChange(id) {
				if (id < 3) {
					this.current = id
					this.menuItemClick(String(id + 1))
				} else {
					this.modifyDevice()
				}
			},
			//底部菜单（第一个菜单）选择事件
			async menuItemClick(item) {
				console.log('点击了：', item);
				// 调用设备分配房间接口
				let params = {
					uuid: this.unit_uuid,
					pactNumber: item,
				}
				const res = await deviceToHome(params);
				if (res.status == 200) {
					uni.showToast({
						title: "分配成功",
						icon: "none"
					});
					// 触发事件通知首页更新
					eventBus.emit('deviceGroupUpdated', {
					  setUuid: this.unit_uuid,
					  pactNumber: item
					});
				} else {
					uni.showToast({
						title: res.msg,
						icon: "none"
					});
				}
			},
			//点击编辑设备
			modifyDevice() {
				this.set_alias == "";
				this.$refs.popupRef.open('center');
			},
			//取消添加设备
			closePopupClick() {
				this.$refs.popupRef.close();
			},
			//绑定设备接口
			async modifyDeviceClick() {
				if (this.set_alias == "") {
					uni.showToast({
						title: "请输入设备别名",
						icon: "none"
					});
					return false;
				}
				let params = {
					set_alias: this.set_alias,
					unit_uuid: this.unit_uuid
				}
				const res = await modifyDevice(params);
				if (res.status == 200) {
					this.closePopupClick();
					this.getDeviceLists();
				} else {
					uni.showToast({
						title: res.msg,
						icon: "none"
					});
				}
			},

			//减少温度
			jianClick() {
				if (this.child_lock2) { //夏季
					if (this.temp < 30) {
						this.temp = 30
					} else {
						this.temp = Number(this.temp) - 1;
					}
				} else { //冬季
					if (this.temp < 30) {
						this.temp = 30
					} else {
						this.temp = Number(this.temp) - 1;
					}
				}
				console.log(this.hexArray)
				let temp = this.hexArray[this.hexArrayNum.indexOf(Number(this.temp))];
				console.log(temp)
				let list0 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x21, Number(this.temp)]) //夏季 30~60 temp 16进制
				let list1 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x22, Number(this.temp)]) //冬季 30~85 temp 16进制
				console.log(list0)
				console.log(list1)
				const message =
					`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ this.child_lock2 ?  this.toBase64(list0) : this.toBase64(list1)}"}}`; // 构造发送的数据
				this.sendData(message); // 连接发送数据

			},
			//增加温度
			jiaClick() {
				if (this.child_lock2) { //夏季
					if (this.temp >= 60) {
						this.temp = 60
					} else {
						this.temp = Number(this.temp) + 1;
					}
				} else { //冬季
					if (this.temp >= 85) {
						this.temp = 85
					} else {
						this.temp = Number(this.temp) + 1;
					}
				}
				let temp = this.hexArray[this.hexArrayNum.indexOf(Number(this.temp))];
				console.log(temp)
				let list0 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x21, Number(this.temp)]) //夏季 30~60 temp 16进制
				let list1 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x22, Number(this.temp)]) //冬季 30~85 temp 16进制
				console.log(list0)
				console.log(list1)
				const message =
					`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ this.child_lock2 ?  this.toBase64(list0) : this.toBase64(list1)}"}}`; // 构造发送的数据
				this.sendData(message); // 连接发送数据
			},

			getProgross(temp) {
				let pross = 0
				if (this.child_lock2) { //夏季
					pross = (((temp - 30) / (60 - 30)) * 100).toFixed(0)
				} else { //冬季
					pross = (((temp - 30) / (85 - 30)) * 100).toFixed(0)
				}
				console.log(pross)
				return pross;
			},

			//壁挂炉开关
			changeSwitch1(bol) {
				//开关机
				let list0 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x10, 0x00]) //关机
				let list1 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x10, 0x01]) //开机
				const message =
					`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ !this.child_lock1 ?  this.toBase64(list0) : this.toBase64(list1)}"}}`; // 构造发送的数据
				this.sendData(message); // 连接发送数据
			},

			//季节设置
			changeSwitch2(bol) {
				//模式改变(季节设置)
				let list0 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x20, 0x01]) //冬季
				let list1 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x20, 0x00]) //夏季
				const message =
					`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ this.child_lock2 ?  this.toBase64(list0) : this.toBase64(list1)}"}}`; // 构造发送的数据
				this.sendData(message); // 连接发送数据
			},

			//ECO模式设置
			changeSwitch3(bol) {
				//只监听，不能设置
			},

			//供暖/卫浴设置
			changeSwitch4(bol) {
				// 温度改变
				let list0 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x22]) //夏季
				let list1 = this.calculateChecksum([0xAA, 0x00, 0x03, 0x02, 0x21]) //冬季
				const message =
					`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ this.child_lock2 ?  this.toBase64(list0) : this.toBase64(list1)}"}}`; // 构造发送的数据
				this.sendData(message); // 连接发送数据
			},

			getTenSixData() {
				// 定义一个空数组，用于存储十六进制数据
				let hexArray = [];
				let hexArrayNum = [];

				// 循环从 30 到 85
				for (let i = 30; i <= 85; i++) {
					// 将十进制数转换为十六进制字符串
					let hexValue = i.toString(16);
					// 如果十六进制字符串长度为 1，前面补 0，使其保持两位
					if (hexValue.length === 1) {
						hexValue = '0' + hexValue;
					}
					// 拼接 0x 并添加到十六进制数组中
					hexArray.push("0x" + hexValue.toUpperCase());
					console.log(hexArray)
					// 将原始十进制数添加到对应的数组中
					hexArrayNum.push(i);
				}
				

				// // 使用 map 方法遍历数组，将每个十六进制字符串转换为数值
				// const hexNumberArray = hexArray.map(item => {
				// 	// 去除字符串前后可能存在的空格
				// 	const trimmedItem = item.trim();
				// 	return parseInt(trimmedItem, 16);
				// });

				this.hexArray = hexArray;
				this.hexArrayNum = hexArrayNum;
				console.log(this.hexArray);
				console.log(this.hexArrayNum);
			},

			//实时通讯 微信使用方法
			initWebSocket() {
				const wsUrl = env.wsUrl; // 替换为你的 WebSocket 服务器地址
				this.webSocket = uni.connectSocket({
					url: wsUrl,
					success: () => {
						console.log('WebSocket 连接已发起');
					},
					fail: (err) => {
						console.error('WebSocket 连接发起失败:', err);
						uni.showToast({
							title: "连接失败",
							icon: "none",
							duration: 2000,
						});
					}
				});

				this.webSocket.onOpen(() => {
					console.log('WebSocket 连接已打开');
					//激活壁挂炉
					let list1 = [0xAA, 0x00, 0x04, 0x05, 0x01, 0x01, 0x01, 0x04, 0x0A] //冬季
					const message =
						`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${ this.toBase64(list1)}"}}`; // 构造发送的数据
					this.sendData(message); // 连接发送数据

					//发送数据
					const message1 = `web_sub://sn=${this.unit_uuid}`; // 构造发送的数据
					this.sendData(message1); // 连接打开后立即发送数据
				});

				this.webSocket.onMessage((event) => {
					console.log('从服务器收到数据:', event.data);
					if (event.data === `UNIT_OUT://sn=${this.unit_uuid}`) {
						uni.showToast({
							title: "设备离线",
							icon: "error",
							duration: 2000,
						});
					} else if (event.data === `UNIT_LOGIN://sn=${this.unit_uuid}`) {
						//服务器立即返回壁挂炉实时数据
						let list1 = [0xAA, 0x00, 0x01, 0x06, 0x06, 0x0A]
						const message =
							`web_col://sn=${this.unit_uuid}&col={"pl_versions":7,"pl_json":{"msg_type":"1","device_sn":"0","data":"${this.toBase64(list1)}"}}`; // 构造发送的数据
						this.sendData(message)
					} else if (this.isJsonString(event.data)) {
						let data = JSON.parse(event.data);
						this.decodeAndProcessData(data.pl_json.data, this.unit_uuid);
					} else {
						console.log('收到的数据不是合法的 JSON 格式:', event.data);
					}
				});

				this.webSocket.onError((error) => {
					console.error('WebSocket 错误:', error);
					uni.showToast({
						title: "服务器异常",
						icon: "none",
						duration: 2000,
					});
				});

				this.webSocket.onClose(() => {
					console.log('WebSocket 连接已关闭');
					// 可以选择在这里重新连接
					if (this.inPage) {
						setTimeout(() => {
							this.initWebSocket();
						}, 5000);
					}
				});
			},
			//是否为json字符串
			isJsonString(str) {
				try {
					JSON.parse(str);
					return true;
				} catch (e) {
					return false;
				}
			},

			//发送命令
			sendData(message) {
				if (this.webSocket) {
					this.webSocket.send({
						data: message,
						success: () => {
							console.log('数据发送成功:', message);
						},
						fail: (err) => {
							console.error('数据发送失败:', err);
						},
					});
				} else {
					console.error('WebSocket 未连接');
				}
			},
			//解析读取的壁挂炉数据
			calculateChecksum(data) {
				console.log(data)
				// 从第 4 个元素开始截取（JavaScript 数组索引从 0 开始）
				let data2 = data.slice(3);

				// 计算校验和（异或操作）
				let checksum = 0;
				for (let b of data2) {
					checksum ^= b;
				}

				// 将校验和添加到原数组
				data.push(checksum);
				data.push(0x0A); // 添加结束符 0x0A

				// 将数组转换为 Uint8Array（类似于 Java 的 byte[]）
				// let bytes = new Uint8Array(data);
				return data;
			},
			//解析读取的壁挂炉数据
			toBase64(data) {
				if (!Array.isArray(data)) {
					console.error('传入的数据不是有效的数组');
					return null;
				}
				try {
					const arrayBuffer = new Uint8Array(data).buffer;
					return uni.arrayBufferToBase64(arrayBuffer);
				} catch (error) {
					console.error('微信小程序平台进行 Base64 编码时出错:', error);
					return null;
				}
				return null;
			},

			//解析数据
			decodeAndProcessData(base64Data, deviceSN) {
				// 使用 uni.base64ToArrayBuffer 解码 Base64 数据
				const arrayBuffer = uni.base64ToArrayBuffer(base64Data);
				// 将 ArrayBuffer 转换为 Uint8Array
				const decodedBytes = new Uint8Array(arrayBuffer);
				// 创建一个新数组，长度是原数组减去 11
				const trimmed = new Uint8Array(decodedBytes.length - 11);

				// 从 decodedBytes 的第 4 个位置开始复制到 trimmed 数组中
				trimmed.set(decodedBytes.subarray(4, 4 + trimmed.length));

				// 解析 flag01（第 1 和第 2 个字节，转换为无符号短整型）
				const flag01 = (decodedBytes[1] << 8) | decodedBytes[2];

				switch (flag01) {
					case 24: // 设备型号
						// 直接将 trimmed 作为字节数组处理
						console.log('设备型号字节数据:', trimmed);
						break;
					case 99: // 开关机回复的设备基本数据
						// 将 trimmed 作为字节数组传递给 extracted 函数
						this.extracted(deviceSN, trimmed);
						break;
					default:
						console.log('未知 flag01:', flag01);
						break;
				}
			},
			extracted(deviceSN, trimmed) {
				// 获取或初始化 stringMap
				if (!this.stringMap) {
					this.stringMap = new Map();
					console.log(this.stringMap)
				}
				// 将 trimmed 转换为十六进制字符串
				const hexString = Array.from(trimmed)
					.map(byte => byte.toString(16).padStart(2, '0'))
					.join(' ');

				// 按空格分割十六进制字符串
				const strArr1 = hexString.split(' ');
				let breakOuterLoop = false;
				for (let i = 0; i < strArr1.length && !breakOuterLoop; i++) {
					switch (strArr1[i]) {
						case "10": // 开关机量 0关 1开
						case "11": // 定时方式 02为 24小时制
						case "19": // 室内设置的目标温度 5->35
						case "20": // 模式 0夏季模式 1冬季模式
						case "21": // 淋浴温度设置 舒适模式下35-50 常规30-60 智能30-60
						case "22": // 采暖温度设置 30-85
						case "23": // 舒适模式开关 0关 1开
						case "25": // 智能沐浴模式 0关 1开
						case "27": // 旅行模式 0关 1开
						case "26": // 经济模式 0关 1开
						case "28": // 睡眠模式 0关 1开
						case "24": // 定时模式 0关 1开
						case "35": // 机器类型 0两用机 1单暖机
						case "40": // 二级防冻状态 0正常 1开启二级防冻
						case "42": // 水流开关 0卫浴水开 1卫浴水关
						case "43": // 房间温控器 0断开 1闭合
						case "46": // 房间温控器 0无火 1有火
						case "49": // 防冻结状态 0关闭 1开启
						case "51": // 室外温度 由室外传感器推送
						case "52": // 气候温度补偿
						case "53": // 卫浴出水实际温度
						case "54": // 供暖出水实际温度
						case "55": // 是否有室外温度传感器 0有 1无
						case "57": // 燃烧模式 0周期模式 1稳火模式
						case "59": // 回水温度传感器 0有 1无
						case "60": // 太阳能功能 0有 1无
						case "61": // 压力传感器 0有 1无
						case "62": // 供暖回差温度 5->30
						case "63": // 水压值 0->4 M/Pa
						case "64": // 机器类型 0板换机 1套管机
						case "65": // 机器类型 0液化气 1天然气
						case "66": // 回水温度 0->100
						case "67": // 水泵运行模式 0一直运行 1间歇运行
						case "68": // 室内实际温度
						case "69": // 火焰大小0->6挡
						case "72": // 采暖方式 0散热片 1地暖
						case "73": // 最大功率值
						case "74": // 最小功率值
						case "75": // 点火功率值
						case "85": // 是否有分段阀门 0有 1无
						case "a0": // 设备模式
						case "0f": // 故障状态
							this.stringMap.set(strArr1[i], [strArr1[i + 1]]);
							i++;
							break;

						case "58": // 耗气量 n/m³
							this.stringMap.set(strArr1[i], [strArr1[i + 1], strArr1[i + 2]]);
							i += 2;
							break;

						case "31": // 结束外部 for 循环
							breakOuterLoop = true;
							break;
					}
				}
				console.log(this.stringMap)
				// 判断 this.stringMap 是否有数据
				if (this.stringMap.size > 0) {
					console.log('this.stringMap 中有数据');
					this.setData();
				} else {
					console.log('this.stringMap 中没有数据');
				}
			},
			//回显参数
			setData() {
				// 获取的是16进制的数，需要转为10进制(使用ths.toSixFromTen()方法设置)
				this.temp1 = this.stringMap.get("54") ? this.toSixFromTen(this.stringMap.get("54")[0]) : ""; // 采暖温度
				this.temp2 = this.stringMap.get("53") ? this.toSixFromTen(this.stringMap.get("53")[0]) : ""; // 卫浴温度
				this.temp3 = this.stringMap.get("66") ? this.toSixFromTen(this.stringMap.get("66")[0]) : ""; // 回水温度
				this.paVal = this.stringMap.get("63") ? (this.toSixFromTen(this.stringMap.get("63")[0]) / 10).toFixed(1) : ""; // 供水压力
				this.child_lock1 = this.stringMap.get("10") ? this.toSixFromTen(this.stringMap.get("10")[0]) == 1 :
					false; // 壁挂炉开关机状态
				this.child_lock2 = this.stringMap.get("20") ? this.toSixFromTen(this.stringMap.get("20")[0]) == 0 :
					false; // 壁挂炉季节状态
				this.$nextTick(() => {
					this.$refs.switchRef2.changeStatus(this.child_lock2)
				})
				this.child_lock3 = this.stringMap.get("26") ? this.toSixFromTen(this.stringMap.get("26")[0]) == 1 :
					false; // 壁挂炉ECO状态
				this.child_lock4 = this.stringMap.get("20") ? this.toSixFromTen(this.stringMap.get("20")[0]) == 0 :
					false; // 壁挂炉供暖/卫浴状态（同步季节状态）
				this.$nextTick(() => {
					this.$refs.switchRef4.changeStatus(this.child_lock4)
				})
				// this.child_lock5 = this.stringMap.get("40") ? this.toSixFromTen(this.stringMap.get("40")[0]) == 1 ? "关闭" : "正常" : "未知"; // 壁挂炉防冻状态
				this.child_lock5 = (this.temp1 !== "" &&  this.temp1 > 8) ? "关闭" : "开启"; // 壁挂炉防冻状态
				const flameStatus = this.stringMap.get("69") ? this.toSixFromTen(this.stringMap.get("69")[0]) : 0;
				const flameStatus2 = this.stringMap.get("46") ? this.toSixFromTen(this.stringMap.get("46")[0]) : 0;
				this.child_lock6 = this.getHuoYanStatus(flameStatus,
				flameStatus2); // 壁挂炉火焰状态，当火焰状态为有火的时候，需要判断火焰级别（69 火焰状态 46 火焰状态2）
				//故障状态
				this.child_lock7 = this.stringMap.get("0f")[0] == "00" ? 
				"正常" : this.getGuZhangStatus(this.stringMap.get("0f")[0])
				if (this.child_lock2) { //夏季
					this.temp = this.stringMap.get("21") ? this.toSixFromTen(this.stringMap.get("21")[0]) : "";
					this.tempHex = this.hexArray[this.hexArrayNum.indexOf(Number(this.temp))];
				} else { //冬季
					this.temp = this.stringMap.get("22") ? this.toSixFromTen(this.stringMap.get("22")[0]) : "";
					this.tempHex = this.hexArray[this.hexArrayNum.indexOf(Number(this.temp))];
				}
			},

			//火焰级别
			getHuoYanStatus(val, val1) {
				console.log(val);
				console.log(val1);
				// 使用 === 进行严格比较
				if (val1 == 0) {
					return "无火";
				} else {
					return "有火";
					// switch (val1) {
					// 	case 1:
					// 		return "一级火焰";
					// 	case 2:
					// 		return "二级火焰";
					// 	case 3:
					// 		return "三级火焰";
					// 	case 4:
					// 		return "四级火焰";
					// 	case 5:
					// 		return "五级火焰";
					// 	case 6:
					// 		return "六级火焰";
					// 	default:
					// 		return "有火";
					// }
				}
			},

			getGuZhangStatus(val) {				switch (val) {					// case "01":					// 	return "E1";					// case "02":					// 	return "E2";					// case "03":					// 	return "E3";					// case "04":					// 	return "E4";					// case "05":					// 	return "E5";					// case "06":					// 	return "E6";					// case "07":					// 	return "E7";					// case "08":					// 	return "E8";					// case "09":					// 	return "E9";					// case "10":					// 	return "EF";					// case "11":					// 	return "EL";					// case "12":					// 	return "ED";					// default:					// 	return "正常";					case "0c":					    //E0						return "E0-" + "低温结冰故障";					case "01":						// "E1";						return "E1-" + "点火失败故障";					case "03":						// "E3";						return "E3-" + "风机转速异常";					case "04":						// "E4";						return "E4-" + "过热故障";					case "05":						// "E5";						return "E5-" + "洗浴进水探头故障";					case "06":						// "E6";						return "E6-" + "洗浴出水探头故障";					case "07":						// "E7";						return "E7-" + "采暖温度探头故障";					case "08":						// "E8";						return "E8-" + "火焰检测故障";					case "09":						// "E9";						return "E9-" + "水压故障";					case "0a":						// "EA";						return "EA-" +"烟气烟溫故障";					case "0b":						// "Eb";						return "Eb-" +"冷凝水堵塞故障";					case "0e":						// "EE";						return "EE-" +"开关阀驱动电路故障";					case "0d":						// "Ed";						return "Ed-" +"着火10s后检测到实际温度无变化四次";					case "0f":						// "EF";						return "EF-"+ "采暖温度NTC>90℃";					// case "0c":					// 	 // "Fd";					// 	return "Fd-" + "自动防冻开启(自动恢复)";					default:						return "正常";				}			},

			//将十六进制转为十进制
			toSixFromTen(hexString) {
				// hexString十六进制字符串
				// 使用 parseInt 函数将十六进制字符串转换为十进制数字
				const decimalNumber = parseInt(hexString, 16);
				return decimalNumber;
			},
			//将十六进制转为十进制
			toSixFromTenFloat(hexString) {
				// hexString十六进制字符串
				// 使用 parseFloat 函数将十六进制字符串转换为十进制数字
				const decimalNumber = parseInt(hexString, 16);
				return decimalNumber;
			},
		},
	}
</script>
<style scoped>
	.container {
		width: 100%;
	}

	.content {
		width: 100%;
		display: flex;
		align-items: center;
		flex-flow: column;
	}

	.canvas-box {
		width: 270px;
		height: 270px;
		background-color: #409eff;
		border-radius: 50%;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.gauge-canvas {
		width: 200px;
		height: 200px;
	}

	.info-box {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 90%;
		height: 80px;
		background-color: #409eff;
		border-radius: 20px;
		color: #ffffff;
	}

	.info-box-item {
		display: flex;
		align-items: center;
		flex-flow: column;
		width: 33.3%;
		justify-content: center;
	}

	.menu-box {
		position: fixed;
		width: 50%;
		/* 根据 TabBar 高度调整 */
		left: 0;
		right: 0;
		background-color: #fff;

		z-index: 999;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.menu {
		width: 70%;
		border-left: 1px solid #cccccc;
		border-right: 1px solid #cccccc;
		border-top: 1px solid #cccccc;
	}

	.menu-item {
		padding: 15px;
		text-align: center;
		border-bottom: 1px solid #eee;
	}

	.white-bg {
		width: 100%;
		display: flex;
		align-items: center;
		justify-content: space-between;
		border-radius: 10px;
		background-color: #ffffff;
		margin-bottom: 10px;
		padding: 0 10px;
		height: 50px;
		box-sizing: border-box;
	}

	.white-bg1 {
		width: 100%;
		display: flex;
		align-items: center;
		justify-content: space-between;
		border-radius: 10px;
		background-color: #ffffff;
		margin-bottom: 10px;
		padding: 10px;
		box-sizing: border-box;
		flex-flow: column;
	}
</style>